<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 方式一
    // let mydata = {
    //     message:"数据"
    // }
    // console.log(mydata);

    // 方式二；
//  let data =   Object.defineProperty({},"message",{
//         configurable:true,
//         enumerable:true, //可枚举；
//         get(){
//             console.log("get..");
//             return "数据"
//         },
//         set(newValue){
//             console.log("set...");
//             console.log(newValue);
//         }
//     });
//     // data.message
//     data.message = "修改的数据";
    // console.log(data);
    // delete data['message'];
    // console.log(data);
    // for(let i in data){
    //     console.log(i);
    // }

    //方式三
    let obj = {
        name:"张三",
        age:20
    }

    function Observe(data){
        for(let key in data){
            let value = data[key];
            Object.defineProperty(data,key,{
                configurable:true,
                enumerable:true,
                get(){
                    console.log("get...");
                    return value;
                },
                set(newValue){
                    console.log("set",newValue);
                    value = newValue;
                    // 会死循环 和get一样；
                    // data[key] = newValue
                }
            })
        }
    }
    Observe(obj);
    // console.log(obj);
    // obj.name
    obj.name = "111"
    // console.log(obj.name);


</script>
</html>